1 module directx.d3dcommon;
2 
3 version(Windows):
4 version(Direct3D_7)
5 	version = Direct3D;
6 version(Direct3D_8)
7 	version = Direct3D;
8 version(Direct3D_9)
9 	version = Direct3D;
10 version(Direct3D_10)
11 	version = Direct3D;
12 version(Direct3D_11)
13 	version = Direct3D;
14 version(Direct3D_12)
15 	version = Direct3D;
16 
17 version(Direct3D):
18 
19 public import directx.com;
20 
21 alias D3DCOLOR = DWORD;
22 
23 struct D3DVECTOR {
24     float x;
25     float y;
26     float z;
27 }
28 alias LPD3DVECTOR = D3DVECTOR*;
29 
30 struct D3DCOLORVALUE {
31     float r;
32     float g;
33     float b;
34     float a;
35 }
36 alias LPD3DCOLORVALUE = D3DCOLORVALUE*;
37 
38 struct D3DRECT {
39     LONG x1;
40     LONG y1;
41     LONG x2;
42     LONG y2;
43 }
44 alias LPD3DRECT = D3DRECT*;
45 
46 union D3DMATRIX {
47     struct {
48         float        _11, _12, _13, _14;
49         float        _21, _22, _23, _24;
50         float        _31, _32, _33, _34;
51         float        _41, _42, _43, _44;
52     }
53     float[4][4] m;
54 }
55 alias LPD3DMATRIX = D3DMATRIX*;
56 
57 alias D3DTRANSFORMSTATETYPE = DWORD;
58 enum : D3DTRANSFORMSTATETYPE {
59     D3DTS_VIEW          = 2,
60     D3DTS_PROJECTION    = 3,
61     D3DTS_TEXTURE0      = 16,
62     D3DTS_TEXTURE1      = 17,
63     D3DTS_TEXTURE2      = 18,
64     D3DTS_TEXTURE3      = 19,
65     D3DTS_TEXTURE4      = 20,
66     D3DTS_TEXTURE5      = 21,
67     D3DTS_TEXTURE6      = 22,
68     D3DTS_TEXTURE7      = 23
69 }
70 
71 alias D3DTEXTURESTAGESTATETYPE = DWORD;
72 enum : D3DTEXTURESTAGESTATETYPE {
73     D3DTSS_COLOROP        =  1, /* D3DTEXTUREOP - per-stage blending controls for color channels */
74     D3DTSS_COLORARG1      =  2, /* D3DTA_* (texture arg) */
75     D3DTSS_COLORARG2      =  3, /* D3DTA_* (texture arg) */
76     D3DTSS_ALPHAOP        =  4, /* D3DTEXTUREOP - per-stage blending controls for alpha channel */
77     D3DTSS_ALPHAARG1      =  5, /* D3DTA_* (texture arg) */
78     D3DTSS_ALPHAARG2      =  6, /* D3DTA_* (texture arg) */
79     D3DTSS_BUMPENVMAT00   =  7, /* float (bump mapping matrix) */
80     D3DTSS_BUMPENVMAT01   =  8, /* float (bump mapping matrix) */
81     D3DTSS_BUMPENVMAT10   =  9, /* float (bump mapping matrix) */
82     D3DTSS_BUMPENVMAT11   = 10, /* float (bump mapping matrix) */
83     D3DTSS_TEXCOORDINDEX  = 11, /* identifies which set of texture coordinates index this texture */
84     D3DTSS_BUMPENVLSCALE  = 22, /* float scale for bump map luminance */
85     D3DTSS_BUMPENVLOFFSET = 23, /* float offset for bump map luminance */
86     D3DTSS_TEXTURETRANSFORMFLAGS = 24, /* D3DTEXTURETRANSFORMFLAGS controls texture transform */
87     D3DTSS_COLORARG0      = 26, /* D3DTA_* third arg for triadic ops */
88     D3DTSS_ALPHAARG0      = 27, /* D3DTA_* third arg for triadic ops */
89     D3DTSS_RESULTARG      = 28, /* D3DTA_* arg for result (CURRENT or TEMP) */
90     D3DTSS_CONSTANT       = 32, /* Per-stage constant D3DTA_CONSTANT */
91 }
92 
93 alias D3DSTATEBLOCKTYPE = DWORD;
94 enum : D3DSTATEBLOCKTYPE {
95     D3DSBT_ALL           = 1, // capture all state
96     D3DSBT_PIXELSTATE    = 2, // capture pixel state
97     D3DSBT_VERTEXSTATE   = 3, // capture vertex state
98 }
99 
100 alias D3DRENDERSTATETYPE = DWORD;
101 enum : D3DRENDERSTATETYPE {
102     D3DRS_ZENABLE                   = 7,    /* D3DZBUFFERTYPE (or TRUE/FALSE for legacy) */
103     D3DRS_FILLMODE                  = 8,    /* D3DFILLMODE */
104     D3DRS_SHADEMODE                 = 9,    /* D3DSHADEMODE */
105     D3DRS_ZWRITEENABLE              = 14,   /* TRUE to enable z writes */
106     D3DRS_ALPHATESTENABLE           = 15,   /* TRUE to enable alpha tests */
107     D3DRS_LASTPIXEL                 = 16,   /* TRUE for last-pixel on lines */
108     D3DRS_SRCBLEND                  = 19,   /* D3DBLEND */
109     D3DRS_DESTBLEND                 = 20,   /* D3DBLEND */
110     D3DRS_CULLMODE                  = 22,   /* D3DCULL */
111     D3DRS_ZFUNC                     = 23,   /* D3DCMPFUNC */
112     D3DRS_ALPHAREF                  = 24,   /* D3DFIXED */
113     D3DRS_ALPHAFUNC                 = 25,   /* D3DCMPFUNC */
114     D3DRS_DITHERENABLE              = 26,   /* TRUE to enable dithering */
115     D3DRS_ALPHABLENDENABLE          = 27,   /* TRUE to enable alpha blending */
116     D3DRS_FOGENABLE                 = 28,   /* TRUE to enable fog blending */
117     D3DRS_SPECULARENABLE            = 29,   /* TRUE to enable specular */
118     D3DRS_FOGCOLOR                  = 34,   /* D3DCOLOR */
119     D3DRS_FOGTABLEMODE              = 35,   /* D3DFOGMODE */
120     D3DRS_FOGSTART                  = 36,   /* Fog start (for both vertex and pixel fog) */
121     D3DRS_FOGEND                    = 37,   /* Fog end      */
122     D3DRS_FOGDENSITY                = 38,   /* Fog density  */
123     D3DRS_RANGEFOGENABLE            = 48,   /* Enables range-based fog */
124     D3DRS_STENCILENABLE             = 52,   /* BOOL enable/disable stenciling */
125     D3DRS_STENCILFAIL               = 53,   /* D3DSTENCILOP to do if stencil test fails */
126     D3DRS_STENCILZFAIL              = 54,   /* D3DSTENCILOP to do if stencil test passes and Z test fails */
127     D3DRS_STENCILPASS               = 55,   /* D3DSTENCILOP to do if both stencil and Z tests pass */
128     D3DRS_STENCILFUNC               = 56,   /* D3DCMPFUNC fn.  Stencil Test passes if ((ref & mask) stencilfn (stencil & mask)) is true */
129     D3DRS_STENCILREF                = 57,   /* Reference value used in stencil test */
130     D3DRS_STENCILMASK               = 58,   /* Mask value used in stencil test */
131     D3DRS_STENCILWRITEMASK          = 59,   /* Write mask applied to values written to stencil buffer */
132     D3DRS_TEXTUREFACTOR             = 60,   /* D3DCOLOR used for multi-texture blend */
133     D3DRS_WRAP0                     = 128,  /* wrap for 1st texture coord. set */
134     D3DRS_WRAP1                     = 129,  /* wrap for 2nd texture coord. set */
135     D3DRS_WRAP2                     = 130,  /* wrap for 3rd texture coord. set */
136     D3DRS_WRAP3                     = 131,  /* wrap for 4th texture coord. set */
137     D3DRS_WRAP4                     = 132,  /* wrap for 5th texture coord. set */
138     D3DRS_WRAP5                     = 133,  /* wrap for 6th texture coord. set */
139     D3DRS_WRAP6                     = 134,  /* wrap for 7th texture coord. set */
140     D3DRS_WRAP7                     = 135,  /* wrap for 8th texture coord. set */
141     D3DRS_CLIPPING                  = 136,
142     D3DRS_LIGHTING                  = 137,
143     D3DRS_AMBIENT                   = 139,
144     D3DRS_FOGVERTEXMODE             = 140,
145     D3DRS_COLORVERTEX               = 141,
146     D3DRS_LOCALVIEWER               = 142,
147     D3DRS_NORMALIZENORMALS          = 143,
148     D3DRS_DIFFUSEMATERIALSOURCE     = 145,
149     D3DRS_SPECULARMATERIALSOURCE    = 146,
150     D3DRS_AMBIENTMATERIALSOURCE     = 147,
151     D3DRS_EMISSIVEMATERIALSOURCE    = 148,
152     D3DRS_VERTEXBLEND               = 151,
153     D3DRS_CLIPPLANEENABLE           = 152,
154     D3DRS_POINTSIZE                 = 154,   /* float point size */
155     D3DRS_POINTSIZE_MIN             = 155,   /* float point size min threshold */
156     D3DRS_POINTSPRITEENABLE         = 156,   /* BOOL point texture coord control */
157     D3DRS_POINTSCALEENABLE          = 157,   /* BOOL point size scale enable */
158     D3DRS_POINTSCALE_A              = 158,   /* float point attenuation A value */
159     D3DRS_POINTSCALE_B              = 159,   /* float point attenuation B value */
160     D3DRS_POINTSCALE_C              = 160,   /* float point attenuation C value */
161     D3DRS_MULTISAMPLEANTIALIAS      = 161,  // BOOL - set to do FSAA with multisample buffer
162     D3DRS_MULTISAMPLEMASK           = 162,  // DWORD - per-sample enable/disable
163     D3DRS_PATCHEDGESTYLE            = 163,  // Sets whether patch edges will use float style tessellation
164     D3DRS_DEBUGMONITORTOKEN         = 165,  // DEBUG ONLY - token to debug monitor
165     D3DRS_POINTSIZE_MAX             = 166,   /* float point size max threshold */
166     D3DRS_INDEXEDVERTEXBLENDENABLE  = 167,
167     D3DRS_COLORWRITEENABLE          = 168,  // per-channel write enable
168     D3DRS_TWEENFACTOR               = 170,   // float tween factor
169     D3DRS_BLENDOP                   = 171,   // D3DBLENDOP setting
170     D3DRS_POSITIONDEGREE            = 172,   // NPatch position interpolation degree. D3DDEGREE_LINEAR or D3DDEGREE_CUBIC (default)
171     D3DRS_NORMALDEGREE              = 173,   // NPatch normal interpolation degree. D3DDEGREE_LINEAR (default) or D3DDEGREE_QUADRATIC
172     D3DRS_SCISSORTESTENABLE         = 174,
173     D3DRS_SLOPESCALEDEPTHBIAS       = 175,
174     D3DRS_ANTIALIASEDLINEENABLE     = 176,
175     D3DRS_MINTESSELLATIONLEVEL      = 178,
176     D3DRS_MAXTESSELLATIONLEVEL      = 179,
177     D3DRS_ADAPTIVETESS_X            = 180,
178     D3DRS_ADAPTIVETESS_Y            = 181,
179     D3DRS_ADAPTIVETESS_Z            = 182,
180     D3DRS_ADAPTIVETESS_W            = 183,
181     D3DRS_ENABLEADAPTIVETESSELLATION = 184,
182     D3DRS_TWOSIDEDSTENCILMODE       = 185,   /* BOOL enable/disable 2 sided stenciling */
183     D3DRS_CCW_STENCILFAIL           = 186,   /* D3DSTENCILOP to do if ccw stencil test fails */
184     D3DRS_CCW_STENCILZFAIL          = 187,   /* D3DSTENCILOP to do if ccw stencil test passes and Z test fails */
185     D3DRS_CCW_STENCILPASS           = 188,   /* D3DSTENCILOP to do if both ccw stencil and Z tests pass */
186     D3DRS_CCW_STENCILFUNC           = 189,   /* D3DCMPFUNC fn.  ccw Stencil Test passes if ((ref & mask) stencilfn (stencil & mask)) is true */
187     D3DRS_COLORWRITEENABLE1         = 190,   /* Additional ColorWriteEnables for the devices that support D3DPMISCCAPS_INDEPENDENTWRITEMASKS */
188     D3DRS_COLORWRITEENABLE2         = 191,   /* Additional ColorWriteEnables for the devices that support D3DPMISCCAPS_INDEPENDENTWRITEMASKS */
189     D3DRS_COLORWRITEENABLE3         = 192,   /* Additional ColorWriteEnables for the devices that support D3DPMISCCAPS_INDEPENDENTWRITEMASKS */
190     D3DRS_BLENDFACTOR               = 193,   /* D3DCOLOR used for a constant blend factor during alpha blending for devices that support D3DPBLENDCAPS_BLENDFACTOR */
191     D3DRS_SRGBWRITEENABLE           = 194,   /* Enable rendertarget writes to be DE-linearized to SRGB (for formats that expose D3DUSAGE_QUERY_SRGBWRITE) */
192     D3DRS_DEPTHBIAS                 = 195,
193     D3DRS_WRAP8                     = 198,   /* Additional wrap states for vs_3_0+ attributes with D3DDECLUSAGE_TEXCOORD */
194     D3DRS_WRAP9                     = 199,
195     D3DRS_WRAP10                    = 200,
196     D3DRS_WRAP11                    = 201,
197     D3DRS_WRAP12                    = 202,
198     D3DRS_WRAP13                    = 203,
199     D3DRS_WRAP14                    = 204,
200     D3DRS_WRAP15                    = 205,
201     D3DRS_SEPARATEALPHABLENDENABLE  = 206,  /* TRUE to enable a separate blending function for the alpha channel */
202     D3DRS_SRCBLENDALPHA             = 207,  /* SRC blend factor for the alpha channel when D3DRS_SEPARATEDESTALPHAENABLE is TRUE */
203     D3DRS_DESTBLENDALPHA            = 208,  /* DST blend factor for the alpha channel when D3DRS_SEPARATEDESTALPHAENABLE is TRUE */
204     D3DRS_BLENDOPALPHA              = 209,  /* Blending operation for the alpha channel when D3DRS_SEPARATEDESTALPHAENABLE is TRUE */
205 }
206 
207 alias D3DPRIMITIVETYPE = DWORD;
208 enum : D3DPRIMITIVETYPE {
209     D3DPT_POINTLIST             = 1,
210     D3DPT_LINELIST              = 2,
211     D3DPT_LINESTRIP             = 3,
212     D3DPT_TRIANGLELIST          = 4,
213     D3DPT_TRIANGLESTRIP         = 5,
214     D3DPT_TRIANGLEFAN           = 6
215 }
216 
217 alias D3DLIGHTTYPE = DWORD;
218 enum : D3DLIGHTTYPE {
219     D3DLIGHT_POINT          = 1,
220     D3DLIGHT_SPOT           = 2,
221     D3DLIGHT_DIRECTIONAL    = 3
222 }
223 
224 enum D3DADAPTER_DEFAULT = 0;
225 
226 enum {
227     D3DCLEAR_TARGET           = 0x00000001,  /* Clear target surface */
228     D3DCLEAR_ZBUFFER          = 0x00000002,  /* Clear target z buffer */
229     D3DCLEAR_STENCIL          = 0x00000004   /* Clear stencil planes */
230 }
231 
232 alias D3DDEVTYPE = DWORD;
233 enum : D3DDEVTYPE {
234     D3DDEVTYPE_HAL     = 1,
235     D3DDEVTYPE_NULLREF = 4,
236     D3DDEVTYPE_REF     = 2,
237     D3DDEVTYPE_SW      = 3
238 }
239 
240 alias D3DFORMAT = DWORD;
241 enum : D3DFORMAT {
242     D3DFMT_UNKNOWN              =  0,
243 
244     D3DFMT_R8G8B8               = 20,
245     D3DFMT_A8R8G8B8             = 21,
246     D3DFMT_X8R8G8B8             = 22,
247     D3DFMT_R5G6B5               = 23,
248     D3DFMT_X1R5G5B5             = 24,
249     D3DFMT_A1R5G5B5             = 25,
250     D3DFMT_A4R4G4B4             = 26,
251     D3DFMT_R3G3B2               = 27,
252     D3DFMT_A8                   = 28,
253     D3DFMT_A8R3G3B2             = 29,
254     D3DFMT_X4R4G4B4             = 30,
255     D3DFMT_A2B10G10R10          = 31,
256     D3DFMT_A8B8G8R8             = 32,
257     D3DFMT_X8B8G8R8             = 33,
258     D3DFMT_G16R16               = 34,
259     D3DFMT_A2R10G10B10          = 35,
260     D3DFMT_A16B16G16R16         = 36,
261 
262     D3DFMT_A8P8                 = 40,
263     D3DFMT_P8                   = 41,
264 
265     D3DFMT_L8                   = 50,
266     D3DFMT_A8L8                 = 51,
267     D3DFMT_A4L4                 = 52,
268 
269     D3DFMT_V8U8                 = 60,
270     D3DFMT_L6V5U5               = 61,
271     D3DFMT_X8L8V8U8             = 62,
272     D3DFMT_Q8W8V8U8             = 63,
273     D3DFMT_V16U16               = 64,
274     D3DFMT_A2W10V10U10          = 67,
275 
276     /*D3DFMT_UYVY                 = MAKEFOURCC('U', 'Y', 'V', 'Y'),
277     D3DFMT_R8G8_B8G8            = MAKEFOURCC('R', 'G', 'B', 'G'),
278     D3DFMT_YUY2                 = MAKEFOURCC('Y', 'U', 'Y', '2'),
279     D3DFMT_G8R8_G8B8            = MAKEFOURCC('G', 'R', 'G', 'B'),
280     D3DFMT_DXT1                 = MAKEFOURCC('D', 'X', 'T', '1'),
281     D3DFMT_DXT2                 = MAKEFOURCC('D', 'X', 'T', '2'),
282     D3DFMT_DXT3                 = MAKEFOURCC('D', 'X', 'T', '3'),
283     D3DFMT_DXT4                 = MAKEFOURCC('D', 'X', 'T', '4'),
284     D3DFMT_DXT5                 = MAKEFOURCC('D', 'X', 'T', '5'),*/
285 
286     D3DFMT_D16_LOCKABLE         = 70,
287     D3DFMT_D32                  = 71,
288     D3DFMT_D15S1                = 73,
289     D3DFMT_D24S8                = 75,
290     D3DFMT_D24X8                = 77,
291     D3DFMT_D24X4S4              = 79,
292     D3DFMT_D16                  = 80,
293 
294     D3DFMT_D32F_LOCKABLE        = 82,
295     D3DFMT_D24FS8               = 83,
296 
297     /* D3D9Ex only -- */
298     D3DFMT_D32_LOCKABLE         = 84,
299     D3DFMT_S8_LOCKABLE          = 85,
300     /* -- D3D9Ex only */
301 
302     D3DFMT_L16                  = 81,
303 
304     D3DFMT_VERTEXDATA           =100,
305     D3DFMT_INDEX16              =101,
306     D3DFMT_INDEX32              =102,
307 
308     D3DFMT_Q16W16V16U16         =110,
309 
310     //D3DFMT_MULTI2_ARGB8         = MAKEFOURCC('M','E','T','1'),
311 
312     D3DFMT_R16F                 = 111,
313     D3DFMT_G16R16F              = 112,
314     D3DFMT_A16B16G16R16F        = 113,
315 
316     D3DFMT_R32F                 = 114,
317     D3DFMT_G32R32F              = 115,
318     D3DFMT_A32B32G32R32F        = 116,
319 
320     D3DFMT_CxV8U8               = 117,
321 
322     /* D3D9Ex only -- */
323     D3DFMT_A1                   = 118,
324     D3DFMT_A2B10G10R10_XR_BIAS  = 119,
325     D3DFMT_BINARYBUFFER         = 199
326     /* -- D3D9Ex only */
327 }
328 
329 alias D3DMULTISAMPLE_TYPE = DWORD;
330 enum : D3DMULTISAMPLE_TYPE {
331     TODO_D3DMULTISAMPLE_TYPE
332 }
333 
334 alias D3DRESOURCETYPE = DWORD;
335 enum : D3DRESOURCETYPE {
336     TODO_D3DRESOURCETYPE
337 }
338 
339 alias D3DBACKBUFFER_TYPE = DWORD;
340 enum : D3DBACKBUFFER_TYPE {
341     D3DBACKBUFFER_TYPE_MONO         = 0,
342     D3DBACKBUFFER_TYPE_LEFT         = 1,
343     D3DBACKBUFFER_TYPE_RIGHT        = 2
344 }
345 
346 alias D3DSWAPEFFECT = DWORD;
347 enum : D3DSWAPEFFECT {
348     D3DSWAPEFFECT_DISCARD = 1,
349     D3DSWAPEFFECT_FLIP    = 2,
350     D3DSWAPEFFECT_COPY    = 3,
351 
352     /* D3D9Ex only -- */
353     D3DSWAPEFFECT_OVERLAY = 4,
354     D3DSWAPEFFECT_FLIPEX  = 5
355     /* -- D3D9Ex only */
356 }
357 
358 alias D3DPOOL = DWORD;
359 enum : D3DPOOL {
360     D3DPOOL_DEFAULT                 = 0,
361     D3DPOOL_MANAGED                 = 1,
362     D3DPOOL_SYSTEMMEM               = 2,
363     D3DPOOL_SCRATCH                 = 3
364 }
365 
366 alias D3DBASISTYPE = DWORD;
367 enum : D3DBASISTYPE {
368     D3DBASIS_BEZIER      = 0,
369     D3DBASIS_BSPLINE     = 1,
370     D3DBASIS_CATMULL_ROM = 2, /* In D3D8 this used to be D3DBASIS_INTERPOLATE */
371 }
372 
373 alias D3DDEGREETYPE = DWORD;
374 enum : D3DDEGREETYPE {
375     D3DDEGREE_LINEAR      = 1,
376     D3DDEGREE_QUADRATIC   = 2,
377     D3DDEGREE_CUBIC       = 3,
378     D3DDEGREE_QUINTIC     = 5
379 }
380 
381 struct D3DRECTPATCH_INFO {
382     UINT                StartVertexOffsetWidth;
383     UINT                StartVertexOffsetHeight;
384     UINT                Width;
385     UINT                Height;
386     UINT                Stride;
387     D3DBASISTYPE        Basis;
388     D3DDEGREETYPE       Degree;
389 }
390 
391 struct D3DTRIPATCH_INFO {
392     UINT                StartVertexOffset;
393     UINT                NumVertices;
394     D3DBASISTYPE        Basis;
395     D3DDEGREETYPE       Degree;
396 }
397 
398 alias D3DCUBEMAP_FACES = DWORD;
399 enum : D3DCUBEMAP_FACES {
400     D3DCUBEMAP_FACE_POSITIVE_X     = 0,
401     D3DCUBEMAP_FACE_NEGATIVE_X     = 1,
402     D3DCUBEMAP_FACE_POSITIVE_Y     = 2,
403     D3DCUBEMAP_FACE_NEGATIVE_Y     = 3,
404     D3DCUBEMAP_FACE_POSITIVE_Z     = 4,
405     D3DCUBEMAP_FACE_NEGATIVE_Z     = 5
406 }
407 
408 struct D3DSURFACE_DESC {
409     D3DFORMAT           Format;
410     D3DRESOURCETYPE     Type;
411     DWORD               Usage;
412     D3DPOOL             Pool;
413     UINT                Size;
414 
415     D3DMULTISAMPLE_TYPE MultiSampleType;
416     UINT                Width;
417     UINT                Height;
418 }
419 
420 struct D3DVOLUME_DESC {
421     D3DFORMAT           Format;
422     D3DRESOURCETYPE     Type;
423     DWORD               Usage;
424     D3DPOOL             Pool;
425     UINT                Size;
426 
427     UINT                Width;
428     UINT                Height;
429     UINT                Depth;
430 }
431 
432 struct D3DLOCKED_RECT {
433     INT                 Pitch;
434     void*               pBits;
435 }
436 
437 struct D3DBOX {
438     UINT                Left;
439     UINT                Top;
440     UINT                Right;
441     UINT                Bottom;
442     UINT                Front;
443     UINT                Back;
444 }
445 
446 struct D3DLOCKED_BOX {
447     INT                 RowPitch;
448     INT                 SlicePitch;
449     void*               pBits;
450 }
451 
452 struct D3DGAMMARAMP {
453     WORD[256]                red  ;
454     WORD[256]                green;
455     WORD[256]                blue ;
456 }
457 
458 struct D3DDEVICE_CREATION_PARAMETERS {
459     UINT            AdapterOrdinal;
460     D3DDEVTYPE      DeviceType;
461     HWND            hFocusWindow;
462     DWORD           BehaviorFlags;
463 }
464 
465 struct D3DDISPLAYMODE {
466     UINT      Width;
467     UINT      Height;
468     UINT      RefreshRate;
469     D3DFORMAT Format;
470 }
471 
472 struct D3DPRESENT_PARAMETERS {
473     UINT                  BackBufferWidth;
474     UINT                  BackBufferHeight;
475     D3DFORMAT             BackBufferFormat;
476     UINT                  BackBufferCount;
477 
478     D3DMULTISAMPLE_TYPE   MultiSampleType;
479     version (_D3D9) DWORD MultiSampleQuality;
480 
481     D3DSWAPEFFECT         SwapEffect;
482     HWND                  hDeviceWindow;
483     BOOL                  Windowed;
484     BOOL                  EnableAutoDepthStencil;
485     D3DFORMAT             AutoDepthStencilFormat;
486     DWORD                 Flags;
487 
488     /* FullScreen_RefreshRateInHz must be zero for Windowed mode */
489     UINT                  FullScreen_RefreshRateInHz;
490     UINT                  FullScreen_PresentationInterval;
491 }
492 
493 enum MAX_DEVICE_IDENTIFIER_STRING = 512;
494 struct D3DADAPTER_IDENTIFIER8 {
495     char[MAX_DEVICE_IDENTIFIER_STRING]            Driver;
496     char[MAX_DEVICE_IDENTIFIER_STRING]            Description;
497 
498     //#ifdef _WIN32
499     LARGE_INTEGER   DriverVersion;            /* Defined for 32 bit components */
500     //#else
501     //        DWORD           DriverVersionLowPart;     /* Defined for 16 bit driver components */
502     //        DWORD           DriverVersionHighPart;
503     //#endif
504 
505     DWORD           VendorId;
506     DWORD           DeviceId;
507     DWORD           SubSysId;
508     DWORD           Revision;
509 
510     GUID            DeviceIdentifier;
511 
512     DWORD           WHQLLevel;
513 }
514 
515 struct D3DADAPTER_IDENTIFIER9 {
516     D3DADAPTER_IDENTIFIER8 identifier8; alias identifier8 this;
517 }
518 
519 struct D3DRASTER_STATUS {
520     BOOL            InVBlank;
521     UINT            ScanLine;
522 }
523 
524 struct D3DCAPS8 {
525     /* Device Info */
526     D3DDEVTYPE  DeviceType;
527     UINT    AdapterOrdinal;
528 
529     /* Caps from DX7 Draw */
530     DWORD   Caps;
531     DWORD   Caps2;
532     DWORD   Caps3;
533     DWORD   PresentationIntervals;
534 
535     /* Cursor Caps */
536     DWORD   CursorCaps;
537 
538     /* 3D Device Caps */
539     DWORD   DevCaps;
540 
541     DWORD   PrimitiveMiscCaps;
542     DWORD   RasterCaps;
543     DWORD   ZCmpCaps;
544     DWORD   SrcBlendCaps;
545     DWORD   DestBlendCaps;
546     DWORD   AlphaCmpCaps;
547     DWORD   ShadeCaps;
548     DWORD   TextureCaps;
549     DWORD   TextureFilterCaps;          // D3DPTFILTERCAPS for IDirect3DTexture8's
550     DWORD   CubeTextureFilterCaps;      // D3DPTFILTERCAPS for IDirect3DCubeTexture8's
551     DWORD   VolumeTextureFilterCaps;    // D3DPTFILTERCAPS for IDirect3DVolumeTexture8's
552     DWORD   TextureAddressCaps;         // D3DPTADDRESSCAPS for IDirect3DTexture8's
553     DWORD   VolumeTextureAddressCaps;   // D3DPTADDRESSCAPS for IDirect3DVolumeTexture8's
554 
555     DWORD   LineCaps;                   // D3DLINECAPS
556 
557     DWORD   MaxTextureWidth, MaxTextureHeight;
558     DWORD   MaxVolumeExtent;
559 
560     DWORD   MaxTextureRepeat;
561     DWORD   MaxTextureAspectRatio;
562     DWORD   MaxAnisotropy;
563     float   MaxVertexW;
564 
565     float   GuardBandLeft;
566     float   GuardBandTop;
567     float   GuardBandRight;
568     float   GuardBandBottom;
569 
570     float   ExtentsAdjust;
571     DWORD   StencilCaps;
572 
573     DWORD   FVFCaps;
574     DWORD   TextureOpCaps;
575     DWORD   MaxTextureBlendStages;
576     DWORD   MaxSimultaneousTextures;
577 
578     DWORD   VertexProcessingCaps;
579     DWORD   MaxActiveLights;
580     DWORD   MaxUserClipPlanes;
581     DWORD   MaxVertexBlendMatrices;
582     DWORD   MaxVertexBlendMatrixIndex;
583 
584     float   MaxPointSize;
585 
586     DWORD   MaxPrimitiveCount;          // max number of primitives per DrawPrimitive call
587     DWORD   MaxVertexIndex;
588     DWORD   MaxStreams;
589     DWORD   MaxStreamStride;            // max stride for SetStreamSource
590 
591     DWORD   VertexShaderVersion;
592     DWORD   MaxVertexShaderConst;       // number of vertex shader constant registers
593 
594     DWORD   PixelShaderVersion;
595     float   MaxPixelShaderValue;        // max value of pixel shader arithmetic component
596 }
597 
598 struct D3DVSHADERCAPS2_0 {
599     DWORD Caps;
600     INT   DynamicFlowControlDepth;
601     INT   NumTemps;
602     INT   StaticFlowControlDepth;
603 }
604 
605 struct D3DPSHADERCAPS2_0 {
606     DWORD Caps;
607     INT   DynamicFlowControlDepth;
608     INT   NumTemps;
609     INT   StaticFlowControlDepth;
610     INT   NumInstructionSlots;
611 }
612 
613 struct D3DCAPS9 {
614     D3DCAPS8 d3dcaps8; alias d3dcaps8 this;
615 
616     // Here are the DX9 specific ones
617     DWORD   DevCaps2;
618 
619     float   MaxNpatchTessellationLevel;
620     DWORD   Reserved5;
621 
622     UINT    MasterAdapterOrdinal;       // ordinal of master adaptor for adapter group
623     UINT    AdapterOrdinalInGroup;      // ordinal inside the adapter group
624     UINT    NumberOfAdaptersInGroup;    // number of adapters in this adapter group (only if master)
625     DWORD   DeclTypes;                  // Data types, supported in vertex declarations
626     DWORD   NumSimultaneousRTs;         // Will be at least 1
627     DWORD   StretchRectFilterCaps;      // Filter caps supported by StretchRect
628     D3DVSHADERCAPS2_0 VS20Caps;
629     D3DPSHADERCAPS2_0 PS20Caps;
630     DWORD   VertexTextureFilterCaps;    // D3DPTFILTERCAPS for IDirect3DTexture9's for texture, used in vertex shaders
631     DWORD   MaxVShaderInstructionsExecuted; // maximum number of vertex shader instructions that can be executed
632     DWORD   MaxPShaderInstructionsExecuted; // maximum number of pixel shader instructions that can be executed
633     DWORD   MaxVertexShader30InstructionSlots;
634     DWORD   MaxPixelShader30InstructionSlots;
635 }
636 
637 enum {
638     D3DCREATE_FPU_PRESERVE                  = 0x00000002,
639     D3DCREATE_MULTITHREADED                 = 0x00000004,
640 
641     D3DCREATE_PUREDEVICE                    = 0x00000010,
642     D3DCREATE_SOFTWARE_VERTEXPROCESSING     = 0x00000020,
643     D3DCREATE_HARDWARE_VERTEXPROCESSING     = 0x00000040,
644     D3DCREATE_MIXED_VERTEXPROCESSING        = 0x00000080,
645 
646     D3DCREATE_DISABLE_DRIVER_MANAGEMENT     = 0x00000100,
647     D3DCREATE_ADAPTERGROUP_DEVICE           = 0x00000200,
648     D3DCREATE_DISABLE_DRIVER_MANAGEMENT_EX  = 0x00000400,
649 
650     // This flag causes the D3D runtime not to alter the focus
651     // window in any way. Use with caution- the burden of supporting
652     // focus management events (alt-tab, etc.) falls on the
653     // application, and appropriate responses (switching display
654     // mode, etc.) should be coded.
655     D3DCREATE_NOWINDOWCHANGES				= 0x00000800,
656 
657     /* D3D9Ex only -- */
658 
659     // Disable multithreading for software vertex processing
660     D3DCREATE_DISABLE_PSGP_THREADING        = 0x00002000,
661     // This flag enables present statistics on device.
662     D3DCREATE_ENABLE_PRESENTSTATS           = 0x00004000,
663     // This flag disables printscreen support in the runtime for this device
664     D3DCREATE_DISABLE_PRINTSCREEN           = 0x00008000,
665 
666     D3DCREATE_SCREENSAVER                   = 0x10000000
667 }
668 
669 enum {
670     /* Usages */
671     D3DUSAGE_RENDERTARGET       = 0x00000001,
672     D3DUSAGE_DEPTHSTENCIL       = 0x00000002,
673 
674     /* Usages for Vertex/Index buffers */
675     D3DUSAGE_WRITEONLY          = 0x00000008,
676     D3DUSAGE_SOFTWAREPROCESSING = 0x00000010,
677     D3DUSAGE_DONOTCLIP          = 0x00000020,
678     D3DUSAGE_POINTS             = 0x00000040,
679     D3DUSAGE_RTPATCHES          = 0x00000080,
680     D3DUSAGE_NPATCHES           = 0x00000100,
681     D3DUSAGE_DYNAMIC            = 0x00000200
682 }
683 
684 alias D3D_DRIVER_TYPE = int;
685 enum : D3D_DRIVER_TYPE
686 {
687 	D3D_DRIVER_TYPE_UNKNOWN	= 0,
688 	D3D_DRIVER_TYPE_HARDWARE	= ( D3D_DRIVER_TYPE_UNKNOWN + 1 ) ,
689 	D3D_DRIVER_TYPE_REFERENCE	= ( D3D_DRIVER_TYPE_HARDWARE + 1 ) ,
690 	D3D_DRIVER_TYPE_NULL	= ( D3D_DRIVER_TYPE_REFERENCE + 1 ) ,
691 	D3D_DRIVER_TYPE_SOFTWARE	= ( D3D_DRIVER_TYPE_NULL + 1 ) ,
692 	D3D_DRIVER_TYPE_WARP	= ( D3D_DRIVER_TYPE_SOFTWARE + 1 ) 
693 }
694 
695 alias D3D_FEATURE_LEVEL = int;
696 enum : D3D_FEATURE_LEVEL
697 {
698 	D3D_FEATURE_LEVEL_9_1	= 0x9100,
699 	D3D_FEATURE_LEVEL_9_2	= 0x9200,
700 	D3D_FEATURE_LEVEL_9_3	= 0x9300,
701 	D3D_FEATURE_LEVEL_10_0	= 0xa000,
702 	D3D_FEATURE_LEVEL_10_1	= 0xa100,
703 	D3D_FEATURE_LEVEL_11_0	= 0xb000,
704     D3D_FEATURE_LEVEL_11_1  = 0xb100,
705     D3D_FEATURE_LEVEL_12_0  = 0xc000,
706     D3D_FEATURE_LEVEL_12_1  = 0xc100
707 }
708 
709 alias D3D_PRIMITIVE_TOPOLOGY = int;
710 enum : D3D_PRIMITIVE_TOPOLOGY
711 {
712 	D3D_PRIMITIVE_TOPOLOGY_UNDEFINED	= 0,
713 	D3D_PRIMITIVE_TOPOLOGY_POINTLIST	= 1,
714 	D3D_PRIMITIVE_TOPOLOGY_LINELIST	= 2,
715 	D3D_PRIMITIVE_TOPOLOGY_LINESTRIP	= 3,
716 	D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST	= 4,
717 	D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP	= 5,
718 	D3D_PRIMITIVE_TOPOLOGY_LINELIST_ADJ	= 10,
719 	D3D_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ	= 11,
720 	D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ	= 12,
721 	D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ	= 13,
722 	D3D_PRIMITIVE_TOPOLOGY_1_CONTROL_POINT_PATCHLIST	= 33,
723 	D3D_PRIMITIVE_TOPOLOGY_2_CONTROL_POINT_PATCHLIST	= 34,
724 	D3D_PRIMITIVE_TOPOLOGY_3_CONTROL_POINT_PATCHLIST	= 35,
725 	D3D_PRIMITIVE_TOPOLOGY_4_CONTROL_POINT_PATCHLIST	= 36,
726 	D3D_PRIMITIVE_TOPOLOGY_5_CONTROL_POINT_PATCHLIST	= 37,
727 	D3D_PRIMITIVE_TOPOLOGY_6_CONTROL_POINT_PATCHLIST	= 38,
728 	D3D_PRIMITIVE_TOPOLOGY_7_CONTROL_POINT_PATCHLIST	= 39,
729 	D3D_PRIMITIVE_TOPOLOGY_8_CONTROL_POINT_PATCHLIST	= 40,
730 	D3D_PRIMITIVE_TOPOLOGY_9_CONTROL_POINT_PATCHLIST	= 41,
731 	D3D_PRIMITIVE_TOPOLOGY_10_CONTROL_POINT_PATCHLIST	= 42,
732 	D3D_PRIMITIVE_TOPOLOGY_11_CONTROL_POINT_PATCHLIST	= 43,
733 	D3D_PRIMITIVE_TOPOLOGY_12_CONTROL_POINT_PATCHLIST	= 44,
734 	D3D_PRIMITIVE_TOPOLOGY_13_CONTROL_POINT_PATCHLIST	= 45,
735 	D3D_PRIMITIVE_TOPOLOGY_14_CONTROL_POINT_PATCHLIST	= 46,
736 	D3D_PRIMITIVE_TOPOLOGY_15_CONTROL_POINT_PATCHLIST	= 47,
737 	D3D_PRIMITIVE_TOPOLOGY_16_CONTROL_POINT_PATCHLIST	= 48,
738 	D3D_PRIMITIVE_TOPOLOGY_17_CONTROL_POINT_PATCHLIST	= 49,
739 	D3D_PRIMITIVE_TOPOLOGY_18_CONTROL_POINT_PATCHLIST	= 50,
740 	D3D_PRIMITIVE_TOPOLOGY_19_CONTROL_POINT_PATCHLIST	= 51,
741 	D3D_PRIMITIVE_TOPOLOGY_20_CONTROL_POINT_PATCHLIST	= 52,
742 	D3D_PRIMITIVE_TOPOLOGY_21_CONTROL_POINT_PATCHLIST	= 53,
743 	D3D_PRIMITIVE_TOPOLOGY_22_CONTROL_POINT_PATCHLIST	= 54,
744 	D3D_PRIMITIVE_TOPOLOGY_23_CONTROL_POINT_PATCHLIST	= 55,
745 	D3D_PRIMITIVE_TOPOLOGY_24_CONTROL_POINT_PATCHLIST	= 56,
746 	D3D_PRIMITIVE_TOPOLOGY_25_CONTROL_POINT_PATCHLIST	= 57,
747 	D3D_PRIMITIVE_TOPOLOGY_26_CONTROL_POINT_PATCHLIST	= 58,
748 	D3D_PRIMITIVE_TOPOLOGY_27_CONTROL_POINT_PATCHLIST	= 59,
749 	D3D_PRIMITIVE_TOPOLOGY_28_CONTROL_POINT_PATCHLIST	= 60,
750 	D3D_PRIMITIVE_TOPOLOGY_29_CONTROL_POINT_PATCHLIST	= 61,
751 	D3D_PRIMITIVE_TOPOLOGY_30_CONTROL_POINT_PATCHLIST	= 62,
752 	D3D_PRIMITIVE_TOPOLOGY_31_CONTROL_POINT_PATCHLIST	= 63,
753 	D3D_PRIMITIVE_TOPOLOGY_32_CONTROL_POINT_PATCHLIST	= 64,
754 	D3D10_PRIMITIVE_TOPOLOGY_UNDEFINED	= D3D_PRIMITIVE_TOPOLOGY_UNDEFINED,
755 	D3D10_PRIMITIVE_TOPOLOGY_POINTLIST	= D3D_PRIMITIVE_TOPOLOGY_POINTLIST,
756 	D3D10_PRIMITIVE_TOPOLOGY_LINELIST	= D3D_PRIMITIVE_TOPOLOGY_LINELIST,
757 	D3D10_PRIMITIVE_TOPOLOGY_LINESTRIP	= D3D_PRIMITIVE_TOPOLOGY_LINESTRIP,
758 	D3D10_PRIMITIVE_TOPOLOGY_TRIANGLELIST	= D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST,
759 	D3D10_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP	= D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP,
760 	D3D10_PRIMITIVE_TOPOLOGY_LINELIST_ADJ	= D3D_PRIMITIVE_TOPOLOGY_LINELIST_ADJ,
761 	D3D10_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ	= D3D_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ,
762 	D3D10_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ	= D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ,
763 	D3D10_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ	= D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ,
764 	D3D11_PRIMITIVE_TOPOLOGY_UNDEFINED	= D3D_PRIMITIVE_TOPOLOGY_UNDEFINED,
765 	D3D11_PRIMITIVE_TOPOLOGY_POINTLIST	= D3D_PRIMITIVE_TOPOLOGY_POINTLIST,
766 	D3D11_PRIMITIVE_TOPOLOGY_LINELIST	= D3D_PRIMITIVE_TOPOLOGY_LINELIST,
767 	D3D11_PRIMITIVE_TOPOLOGY_LINESTRIP	= D3D_PRIMITIVE_TOPOLOGY_LINESTRIP,
768 	D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST	= D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST,
769 	D3D11_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP	= D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP,
770 	D3D11_PRIMITIVE_TOPOLOGY_LINELIST_ADJ	= D3D_PRIMITIVE_TOPOLOGY_LINELIST_ADJ,
771 	D3D11_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ	= D3D_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ,
772 	D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ	= D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ,
773 	D3D11_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ	= D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ,
774 	D3D11_PRIMITIVE_TOPOLOGY_1_CONTROL_POINT_PATCHLIST	= D3D_PRIMITIVE_TOPOLOGY_1_CONTROL_POINT_PATCHLIST,
775 	D3D11_PRIMITIVE_TOPOLOGY_2_CONTROL_POINT_PATCHLIST	= D3D_PRIMITIVE_TOPOLOGY_2_CONTROL_POINT_PATCHLIST,
776 	D3D11_PRIMITIVE_TOPOLOGY_3_CONTROL_POINT_PATCHLIST	= D3D_PRIMITIVE_TOPOLOGY_3_CONTROL_POINT_PATCHLIST,
777 	D3D11_PRIMITIVE_TOPOLOGY_4_CONTROL_POINT_PATCHLIST	= D3D_PRIMITIVE_TOPOLOGY_4_CONTROL_POINT_PATCHLIST,
778 	D3D11_PRIMITIVE_TOPOLOGY_5_CONTROL_POINT_PATCHLIST	= D3D_PRIMITIVE_TOPOLOGY_5_CONTROL_POINT_PATCHLIST,
779 	D3D11_PRIMITIVE_TOPOLOGY_6_CONTROL_POINT_PATCHLIST	= D3D_PRIMITIVE_TOPOLOGY_6_CONTROL_POINT_PATCHLIST,
780 	D3D11_PRIMITIVE_TOPOLOGY_7_CONTROL_POINT_PATCHLIST	= D3D_PRIMITIVE_TOPOLOGY_7_CONTROL_POINT_PATCHLIST,
781 	D3D11_PRIMITIVE_TOPOLOGY_8_CONTROL_POINT_PATCHLIST	= D3D_PRIMITIVE_TOPOLOGY_8_CONTROL_POINT_PATCHLIST,
782 	D3D11_PRIMITIVE_TOPOLOGY_9_CONTROL_POINT_PATCHLIST	= D3D_PRIMITIVE_TOPOLOGY_9_CONTROL_POINT_PATCHLIST,
783 	D3D11_PRIMITIVE_TOPOLOGY_10_CONTROL_POINT_PATCHLIST	= D3D_PRIMITIVE_TOPOLOGY_10_CONTROL_POINT_PATCHLIST,
784 	D3D11_PRIMITIVE_TOPOLOGY_11_CONTROL_POINT_PATCHLIST	= D3D_PRIMITIVE_TOPOLOGY_11_CONTROL_POINT_PATCHLIST,
785 	D3D11_PRIMITIVE_TOPOLOGY_12_CONTROL_POINT_PATCHLIST	= D3D_PRIMITIVE_TOPOLOGY_12_CONTROL_POINT_PATCHLIST,
786 	D3D11_PRIMITIVE_TOPOLOGY_13_CONTROL_POINT_PATCHLIST	= D3D_PRIMITIVE_TOPOLOGY_13_CONTROL_POINT_PATCHLIST,
787 	D3D11_PRIMITIVE_TOPOLOGY_14_CONTROL_POINT_PATCHLIST	= D3D_PRIMITIVE_TOPOLOGY_14_CONTROL_POINT_PATCHLIST,
788 	D3D11_PRIMITIVE_TOPOLOGY_15_CONTROL_POINT_PATCHLIST	= D3D_PRIMITIVE_TOPOLOGY_15_CONTROL_POINT_PATCHLIST,
789 	D3D11_PRIMITIVE_TOPOLOGY_16_CONTROL_POINT_PATCHLIST	= D3D_PRIMITIVE_TOPOLOGY_16_CONTROL_POINT_PATCHLIST,
790 	D3D11_PRIMITIVE_TOPOLOGY_17_CONTROL_POINT_PATCHLIST	= D3D_PRIMITIVE_TOPOLOGY_17_CONTROL_POINT_PATCHLIST,
791 	D3D11_PRIMITIVE_TOPOLOGY_18_CONTROL_POINT_PATCHLIST	= D3D_PRIMITIVE_TOPOLOGY_18_CONTROL_POINT_PATCHLIST,
792 	D3D11_PRIMITIVE_TOPOLOGY_19_CONTROL_POINT_PATCHLIST	= D3D_PRIMITIVE_TOPOLOGY_19_CONTROL_POINT_PATCHLIST,
793 	D3D11_PRIMITIVE_TOPOLOGY_20_CONTROL_POINT_PATCHLIST	= D3D_PRIMITIVE_TOPOLOGY_20_CONTROL_POINT_PATCHLIST,
794 	D3D11_PRIMITIVE_TOPOLOGY_21_CONTROL_POINT_PATCHLIST	= D3D_PRIMITIVE_TOPOLOGY_21_CONTROL_POINT_PATCHLIST,
795 	D3D11_PRIMITIVE_TOPOLOGY_22_CONTROL_POINT_PATCHLIST	= D3D_PRIMITIVE_TOPOLOGY_22_CONTROL_POINT_PATCHLIST,
796 	D3D11_PRIMITIVE_TOPOLOGY_23_CONTROL_POINT_PATCHLIST	= D3D_PRIMITIVE_TOPOLOGY_23_CONTROL_POINT_PATCHLIST,
797 	D3D11_PRIMITIVE_TOPOLOGY_24_CONTROL_POINT_PATCHLIST	= D3D_PRIMITIVE_TOPOLOGY_24_CONTROL_POINT_PATCHLIST,
798 	D3D11_PRIMITIVE_TOPOLOGY_25_CONTROL_POINT_PATCHLIST	= D3D_PRIMITIVE_TOPOLOGY_25_CONTROL_POINT_PATCHLIST,
799 	D3D11_PRIMITIVE_TOPOLOGY_26_CONTROL_POINT_PATCHLIST	= D3D_PRIMITIVE_TOPOLOGY_26_CONTROL_POINT_PATCHLIST,
800 	D3D11_PRIMITIVE_TOPOLOGY_27_CONTROL_POINT_PATCHLIST	= D3D_PRIMITIVE_TOPOLOGY_27_CONTROL_POINT_PATCHLIST,
801 	D3D11_PRIMITIVE_TOPOLOGY_28_CONTROL_POINT_PATCHLIST	= D3D_PRIMITIVE_TOPOLOGY_28_CONTROL_POINT_PATCHLIST,
802 	D3D11_PRIMITIVE_TOPOLOGY_29_CONTROL_POINT_PATCHLIST	= D3D_PRIMITIVE_TOPOLOGY_29_CONTROL_POINT_PATCHLIST,
803 	D3D11_PRIMITIVE_TOPOLOGY_30_CONTROL_POINT_PATCHLIST	= D3D_PRIMITIVE_TOPOLOGY_30_CONTROL_POINT_PATCHLIST,
804 	D3D11_PRIMITIVE_TOPOLOGY_31_CONTROL_POINT_PATCHLIST	= D3D_PRIMITIVE_TOPOLOGY_31_CONTROL_POINT_PATCHLIST,
805 	D3D11_PRIMITIVE_TOPOLOGY_32_CONTROL_POINT_PATCHLIST	= D3D_PRIMITIVE_TOPOLOGY_32_CONTROL_POINT_PATCHLIST
806 }
807 
808 alias D3D_PRIMITIVE = int;
809 enum : D3D_PRIMITIVE
810 {
811 	D3D_PRIMITIVE_UNDEFINED	= 0,
812 	D3D_PRIMITIVE_POINT	= 1,
813 	D3D_PRIMITIVE_LINE	= 2,
814 	D3D_PRIMITIVE_TRIANGLE	= 3,
815 	D3D_PRIMITIVE_LINE_ADJ	= 6,
816 	D3D_PRIMITIVE_TRIANGLE_ADJ	= 7,
817 	D3D_PRIMITIVE_1_CONTROL_POINT_PATCH	= 8,
818 	D3D_PRIMITIVE_2_CONTROL_POINT_PATCH	= 9,
819 	D3D_PRIMITIVE_3_CONTROL_POINT_PATCH	= 10,
820 	D3D_PRIMITIVE_4_CONTROL_POINT_PATCH	= 11,
821 	D3D_PRIMITIVE_5_CONTROL_POINT_PATCH	= 12,
822 	D3D_PRIMITIVE_6_CONTROL_POINT_PATCH	= 13,
823 	D3D_PRIMITIVE_7_CONTROL_POINT_PATCH	= 14,
824 	D3D_PRIMITIVE_8_CONTROL_POINT_PATCH	= 15,
825 	D3D_PRIMITIVE_9_CONTROL_POINT_PATCH	= 16,
826 	D3D_PRIMITIVE_10_CONTROL_POINT_PATCH	= 17,
827 	D3D_PRIMITIVE_11_CONTROL_POINT_PATCH	= 18,
828 	D3D_PRIMITIVE_12_CONTROL_POINT_PATCH	= 19,
829 	D3D_PRIMITIVE_13_CONTROL_POINT_PATCH	= 20,
830 	D3D_PRIMITIVE_14_CONTROL_POINT_PATCH	= 21,
831 	D3D_PRIMITIVE_15_CONTROL_POINT_PATCH	= 22,
832 	D3D_PRIMITIVE_16_CONTROL_POINT_PATCH	= 23,
833 	D3D_PRIMITIVE_17_CONTROL_POINT_PATCH	= 24,
834 	D3D_PRIMITIVE_18_CONTROL_POINT_PATCH	= 25,
835 	D3D_PRIMITIVE_19_CONTROL_POINT_PATCH	= 26,
836 	D3D_PRIMITIVE_20_CONTROL_POINT_PATCH	= 28,
837 	D3D_PRIMITIVE_21_CONTROL_POINT_PATCH	= 29,
838 	D3D_PRIMITIVE_22_CONTROL_POINT_PATCH	= 30,
839 	D3D_PRIMITIVE_23_CONTROL_POINT_PATCH	= 31,
840 	D3D_PRIMITIVE_24_CONTROL_POINT_PATCH	= 32,
841 	D3D_PRIMITIVE_25_CONTROL_POINT_PATCH	= 33,
842 	D3D_PRIMITIVE_26_CONTROL_POINT_PATCH	= 34,
843 	D3D_PRIMITIVE_27_CONTROL_POINT_PATCH	= 35,
844 	D3D_PRIMITIVE_28_CONTROL_POINT_PATCH	= 36,
845 	D3D_PRIMITIVE_29_CONTROL_POINT_PATCH	= 37,
846 	D3D_PRIMITIVE_30_CONTROL_POINT_PATCH	= 38,
847 	D3D_PRIMITIVE_31_CONTROL_POINT_PATCH	= 39,
848 	D3D_PRIMITIVE_32_CONTROL_POINT_PATCH	= 40,
849 	D3D10_PRIMITIVE_UNDEFINED	= D3D_PRIMITIVE_UNDEFINED,
850 	D3D10_PRIMITIVE_POINT	= D3D_PRIMITIVE_POINT,
851 	D3D10_PRIMITIVE_LINE	= D3D_PRIMITIVE_LINE,
852 	D3D10_PRIMITIVE_TRIANGLE	= D3D_PRIMITIVE_TRIANGLE,
853 	D3D10_PRIMITIVE_LINE_ADJ	= D3D_PRIMITIVE_LINE_ADJ,
854 	D3D10_PRIMITIVE_TRIANGLE_ADJ	= D3D_PRIMITIVE_TRIANGLE_ADJ,
855 	D3D11_PRIMITIVE_UNDEFINED	= D3D_PRIMITIVE_UNDEFINED,
856 	D3D11_PRIMITIVE_POINT	= D3D_PRIMITIVE_POINT,
857 	D3D11_PRIMITIVE_LINE	= D3D_PRIMITIVE_LINE,
858 	D3D11_PRIMITIVE_TRIANGLE	= D3D_PRIMITIVE_TRIANGLE,
859 	D3D11_PRIMITIVE_LINE_ADJ	= D3D_PRIMITIVE_LINE_ADJ,
860 	D3D11_PRIMITIVE_TRIANGLE_ADJ	= D3D_PRIMITIVE_TRIANGLE_ADJ,
861 	D3D11_PRIMITIVE_1_CONTROL_POINT_PATCH	= D3D_PRIMITIVE_1_CONTROL_POINT_PATCH,
862 	D3D11_PRIMITIVE_2_CONTROL_POINT_PATCH	= D3D_PRIMITIVE_2_CONTROL_POINT_PATCH,
863 	D3D11_PRIMITIVE_3_CONTROL_POINT_PATCH	= D3D_PRIMITIVE_3_CONTROL_POINT_PATCH,
864 	D3D11_PRIMITIVE_4_CONTROL_POINT_PATCH	= D3D_PRIMITIVE_4_CONTROL_POINT_PATCH,
865 	D3D11_PRIMITIVE_5_CONTROL_POINT_PATCH	= D3D_PRIMITIVE_5_CONTROL_POINT_PATCH,
866 	D3D11_PRIMITIVE_6_CONTROL_POINT_PATCH	= D3D_PRIMITIVE_6_CONTROL_POINT_PATCH,
867 	D3D11_PRIMITIVE_7_CONTROL_POINT_PATCH	= D3D_PRIMITIVE_7_CONTROL_POINT_PATCH,
868 	D3D11_PRIMITIVE_8_CONTROL_POINT_PATCH	= D3D_PRIMITIVE_8_CONTROL_POINT_PATCH,
869 	D3D11_PRIMITIVE_9_CONTROL_POINT_PATCH	= D3D_PRIMITIVE_9_CONTROL_POINT_PATCH,
870 	D3D11_PRIMITIVE_10_CONTROL_POINT_PATCH	= D3D_PRIMITIVE_10_CONTROL_POINT_PATCH,
871 	D3D11_PRIMITIVE_11_CONTROL_POINT_PATCH	= D3D_PRIMITIVE_11_CONTROL_POINT_PATCH,
872 	D3D11_PRIMITIVE_12_CONTROL_POINT_PATCH	= D3D_PRIMITIVE_12_CONTROL_POINT_PATCH,
873 	D3D11_PRIMITIVE_13_CONTROL_POINT_PATCH	= D3D_PRIMITIVE_13_CONTROL_POINT_PATCH,
874 	D3D11_PRIMITIVE_14_CONTROL_POINT_PATCH	= D3D_PRIMITIVE_14_CONTROL_POINT_PATCH,
875 	D3D11_PRIMITIVE_15_CONTROL_POINT_PATCH	= D3D_PRIMITIVE_15_CONTROL_POINT_PATCH,
876 	D3D11_PRIMITIVE_16_CONTROL_POINT_PATCH	= D3D_PRIMITIVE_16_CONTROL_POINT_PATCH,
877 	D3D11_PRIMITIVE_17_CONTROL_POINT_PATCH	= D3D_PRIMITIVE_17_CONTROL_POINT_PATCH,
878 	D3D11_PRIMITIVE_18_CONTROL_POINT_PATCH	= D3D_PRIMITIVE_18_CONTROL_POINT_PATCH,
879 	D3D11_PRIMITIVE_19_CONTROL_POINT_PATCH	= D3D_PRIMITIVE_19_CONTROL_POINT_PATCH,
880 	D3D11_PRIMITIVE_20_CONTROL_POINT_PATCH	= D3D_PRIMITIVE_20_CONTROL_POINT_PATCH,
881 	D3D11_PRIMITIVE_21_CONTROL_POINT_PATCH	= D3D_PRIMITIVE_21_CONTROL_POINT_PATCH,
882 	D3D11_PRIMITIVE_22_CONTROL_POINT_PATCH	= D3D_PRIMITIVE_22_CONTROL_POINT_PATCH,
883 	D3D11_PRIMITIVE_23_CONTROL_POINT_PATCH	= D3D_PRIMITIVE_23_CONTROL_POINT_PATCH,
884 	D3D11_PRIMITIVE_24_CONTROL_POINT_PATCH	= D3D_PRIMITIVE_24_CONTROL_POINT_PATCH,
885 	D3D11_PRIMITIVE_25_CONTROL_POINT_PATCH	= D3D_PRIMITIVE_25_CONTROL_POINT_PATCH,
886 	D3D11_PRIMITIVE_26_CONTROL_POINT_PATCH	= D3D_PRIMITIVE_26_CONTROL_POINT_PATCH,
887 	D3D11_PRIMITIVE_27_CONTROL_POINT_PATCH	= D3D_PRIMITIVE_27_CONTROL_POINT_PATCH,
888 	D3D11_PRIMITIVE_28_CONTROL_POINT_PATCH	= D3D_PRIMITIVE_28_CONTROL_POINT_PATCH,
889 	D3D11_PRIMITIVE_29_CONTROL_POINT_PATCH	= D3D_PRIMITIVE_29_CONTROL_POINT_PATCH,
890 	D3D11_PRIMITIVE_30_CONTROL_POINT_PATCH	= D3D_PRIMITIVE_30_CONTROL_POINT_PATCH,
891 	D3D11_PRIMITIVE_31_CONTROL_POINT_PATCH	= D3D_PRIMITIVE_31_CONTROL_POINT_PATCH,
892 	D3D11_PRIMITIVE_32_CONTROL_POINT_PATCH	= D3D_PRIMITIVE_32_CONTROL_POINT_PATCH
893 }
894 
895 
896 alias D3D_SRV_DIMENSION = int;
897 enum : D3D_SRV_DIMENSION
898 {
899 	D3D_SRV_DIMENSION_UNKNOWN	= 0,
900 	D3D_SRV_DIMENSION_BUFFER	= 1,
901 	D3D_SRV_DIMENSION_TEXTURE1D	= 2,
902 	D3D_SRV_DIMENSION_TEXTURE1DARRAY	= 3,
903 	D3D_SRV_DIMENSION_TEXTURE2D	= 4,
904 	D3D_SRV_DIMENSION_TEXTURE2DARRAY	= 5,
905 	D3D_SRV_DIMENSION_TEXTURE2DMS	= 6,
906 	D3D_SRV_DIMENSION_TEXTURE2DMSARRAY	= 7,
907 	D3D_SRV_DIMENSION_TEXTURE3D	= 8,
908 	D3D_SRV_DIMENSION_TEXTURECUBE	= 9,
909 	D3D_SRV_DIMENSION_TEXTURECUBEARRAY	= 10,
910 	D3D_SRV_DIMENSION_BUFFEREX	= 11,
911 	D3D10_SRV_DIMENSION_UNKNOWN	= D3D_SRV_DIMENSION_UNKNOWN,
912 	D3D10_SRV_DIMENSION_BUFFER	= D3D_SRV_DIMENSION_BUFFER,
913 	D3D10_SRV_DIMENSION_TEXTURE1D	= D3D_SRV_DIMENSION_TEXTURE1D,
914 	D3D10_SRV_DIMENSION_TEXTURE1DARRAY	= D3D_SRV_DIMENSION_TEXTURE1DARRAY,
915 	D3D10_SRV_DIMENSION_TEXTURE2D	= D3D_SRV_DIMENSION_TEXTURE2D,
916 	D3D10_SRV_DIMENSION_TEXTURE2DARRAY	= D3D_SRV_DIMENSION_TEXTURE2DARRAY,
917 	D3D10_SRV_DIMENSION_TEXTURE2DMS	= D3D_SRV_DIMENSION_TEXTURE2DMS,
918 	D3D10_SRV_DIMENSION_TEXTURE2DMSARRAY	= D3D_SRV_DIMENSION_TEXTURE2DMSARRAY,
919 	D3D10_SRV_DIMENSION_TEXTURE3D	= D3D_SRV_DIMENSION_TEXTURE3D,
920 	D3D10_SRV_DIMENSION_TEXTURECUBE	= D3D_SRV_DIMENSION_TEXTURECUBE,
921 	D3D10_1_SRV_DIMENSION_UNKNOWN	= D3D_SRV_DIMENSION_UNKNOWN,
922 	D3D10_1_SRV_DIMENSION_BUFFER	= D3D_SRV_DIMENSION_BUFFER,
923 	D3D10_1_SRV_DIMENSION_TEXTURE1D	= D3D_SRV_DIMENSION_TEXTURE1D,
924 	D3D10_1_SRV_DIMENSION_TEXTURE1DARRAY	= D3D_SRV_DIMENSION_TEXTURE1DARRAY,
925 	D3D10_1_SRV_DIMENSION_TEXTURE2D	= D3D_SRV_DIMENSION_TEXTURE2D,
926 	D3D10_1_SRV_DIMENSION_TEXTURE2DARRAY	= D3D_SRV_DIMENSION_TEXTURE2DARRAY,
927 	D3D10_1_SRV_DIMENSION_TEXTURE2DMS	= D3D_SRV_DIMENSION_TEXTURE2DMS,
928 	D3D10_1_SRV_DIMENSION_TEXTURE2DMSARRAY	= D3D_SRV_DIMENSION_TEXTURE2DMSARRAY,
929 	D3D10_1_SRV_DIMENSION_TEXTURE3D	= D3D_SRV_DIMENSION_TEXTURE3D,
930 	D3D10_1_SRV_DIMENSION_TEXTURECUBE	= D3D_SRV_DIMENSION_TEXTURECUBE,
931 	D3D10_1_SRV_DIMENSION_TEXTURECUBEARRAY	= D3D_SRV_DIMENSION_TEXTURECUBEARRAY,
932 	D3D11_SRV_DIMENSION_UNKNOWN	= D3D_SRV_DIMENSION_UNKNOWN,
933 	D3D11_SRV_DIMENSION_BUFFER	= D3D_SRV_DIMENSION_BUFFER,
934 	D3D11_SRV_DIMENSION_TEXTURE1D	= D3D_SRV_DIMENSION_TEXTURE1D,
935 	D3D11_SRV_DIMENSION_TEXTURE1DARRAY	= D3D_SRV_DIMENSION_TEXTURE1DARRAY,
936 	D3D11_SRV_DIMENSION_TEXTURE2D	= D3D_SRV_DIMENSION_TEXTURE2D,
937 	D3D11_SRV_DIMENSION_TEXTURE2DARRAY	= D3D_SRV_DIMENSION_TEXTURE2DARRAY,
938 	D3D11_SRV_DIMENSION_TEXTURE2DMS	= D3D_SRV_DIMENSION_TEXTURE2DMS,
939 	D3D11_SRV_DIMENSION_TEXTURE2DMSARRAY	= D3D_SRV_DIMENSION_TEXTURE2DMSARRAY,
940 	D3D11_SRV_DIMENSION_TEXTURE3D	= D3D_SRV_DIMENSION_TEXTURE3D,
941 	D3D11_SRV_DIMENSION_TEXTURECUBE	= D3D_SRV_DIMENSION_TEXTURECUBE,
942 	D3D11_SRV_DIMENSION_TEXTURECUBEARRAY	= D3D_SRV_DIMENSION_TEXTURECUBEARRAY,
943 	D3D11_SRV_DIMENSION_BUFFEREX	= D3D_SRV_DIMENSION_BUFFEREX
944 }
945 
946 struct _D3D_SHADER_MACRO
947 {
948 	LPCSTR Name;
949 	LPCSTR Definition;
950 }
951 alias _D3D_SHADER_MACRO D3D_SHADER_MACRO;
952 alias _D3D_SHADER_MACRO* LPD3D_SHADER_MACRO;
953 
954 mixin( uuid!(ID3D10Blob, "8BA5FB08-5195-40e2-AC58-0D989C3A0102") );
955 interface ID3D10Blob : IUnknown
956 {
957 	extern(Windows):
958 	LPVOID GetBufferPointer();
959 	
960 	SIZE_T GetBufferSize();
961 	
962 }
963 alias ID3D10Blob LPD3D10BLOB;
964 alias ID3D10Blob ID3DBlob;
965 alias ID3DBlob LPD3DBLOB;
966 alias IID_ID3D10Blob IID_ID3DBlob;
967 
968 
969 alias _D3D_INCLUDE_TYPE = int;
970 enum : _D3D_INCLUDE_TYPE
971 {
972 	D3D_INCLUDE_LOCAL	= 0,
973 	D3D_INCLUDE_SYSTEM	= ( D3D_INCLUDE_LOCAL + 1 ) ,
974 	D3D10_INCLUDE_LOCAL	= D3D_INCLUDE_LOCAL,
975 	D3D10_INCLUDE_SYSTEM	= D3D_INCLUDE_SYSTEM,
976 	D3D_INCLUDE_FORCE_DWORD	= 0x7fffffff
977 }
978 alias _D3D_INCLUDE_TYPE D3D_INCLUDE_TYPE;
979 
980 
981 extern(C++) interface ID3DInclude
982 {
983   extern(Windows):
984     HRESULT Open(D3D_INCLUDE_TYPE IncludeType, LPCSTR pFileName, LPCVOID pParentData, LPCVOID* ppData, UINT* pBytes);
985     HRESULT Close(LPCVOID pData);
986 }
987 alias ID3DInclude LPD3DINCLUDE;
988 
989 
990 alias _D3D_SHADER_VARIABLE_CLASS = int;
991 enum : _D3D_SHADER_VARIABLE_CLASS
992 {
993 	D3D_SVC_SCALAR	= 0,
994 	D3D_SVC_VECTOR	= ( D3D_SVC_SCALAR + 1 ) ,
995 	D3D_SVC_MATRIX_ROWS	= ( D3D_SVC_VECTOR + 1 ) ,
996 	D3D_SVC_MATRIX_COLUMNS	= ( D3D_SVC_MATRIX_ROWS + 1 ) ,
997 	D3D_SVC_OBJECT	= ( D3D_SVC_MATRIX_COLUMNS + 1 ) ,
998 	D3D_SVC_STRUCT	= ( D3D_SVC_OBJECT + 1 ) ,
999 	D3D_SVC_INTERFACE_CLASS	= ( D3D_SVC_STRUCT + 1 ) ,
1000 	D3D_SVC_INTERFACE_POINTER	= ( D3D_SVC_INTERFACE_CLASS + 1 ) ,
1001 	D3D10_SVC_SCALAR	= D3D_SVC_SCALAR,
1002 	D3D10_SVC_VECTOR	= D3D_SVC_VECTOR,
1003 	D3D10_SVC_MATRIX_ROWS	= D3D_SVC_MATRIX_ROWS,
1004 	D3D10_SVC_MATRIX_COLUMNS	= D3D_SVC_MATRIX_COLUMNS,
1005 	D3D10_SVC_OBJECT	= D3D_SVC_OBJECT,
1006 	D3D10_SVC_STRUCT	= D3D_SVC_STRUCT,
1007 	D3D11_SVC_INTERFACE_CLASS	= D3D_SVC_INTERFACE_CLASS,
1008 	D3D11_SVC_INTERFACE_POINTER	= D3D_SVC_INTERFACE_POINTER,
1009 	D3D_SVC_FORCE_DWORD	= 0x7fffffff
1010 }
1011 alias _D3D_SHADER_VARIABLE_CLASS D3D_SHADER_VARIABLE_CLASS;
1012 
1013 
1014 alias _D3D_SHADER_VARIABLE_FLAGS = int;
1015 enum : _D3D_SHADER_VARIABLE_FLAGS
1016 {
1017 	D3D_SVF_USERPACKED	= 1,
1018 	D3D_SVF_USED	= 2,
1019 	D3D_SVF_INTERFACE_POINTER	= 4,
1020 	D3D_SVF_INTERFACE_PARAMETER	= 8,
1021 	D3D10_SVF_USERPACKED	= D3D_SVF_USERPACKED,
1022 	D3D10_SVF_USED	= D3D_SVF_USED,
1023 	D3D11_SVF_INTERFACE_POINTER	= D3D_SVF_INTERFACE_POINTER,
1024 	D3D11_SVF_INTERFACE_PARAMETER	= D3D_SVF_INTERFACE_PARAMETER,
1025 	D3D_SVF_FORCE_DWORD	= 0x7fffffff
1026 }
1027 alias _D3D_SHADER_VARIABLE_FLAGS D3D_SHADER_VARIABLE_FLAGS;
1028 
1029 
1030 alias _D3D_SHADER_VARIABLE_TYPE = int;
1031 enum : _D3D_SHADER_VARIABLE_TYPE
1032 {
1033 	D3D_SVT_VOID	= 0,
1034 	D3D_SVT_BOOL	= 1,
1035 	D3D_SVT_INT	= 2,
1036 	D3D_SVT_FLOAT	= 3,
1037 	D3D_SVT_STRING	= 4,
1038 	D3D_SVT_TEXTURE	= 5,
1039 	D3D_SVT_TEXTURE1D	= 6,
1040 	D3D_SVT_TEXTURE2D	= 7,
1041 	D3D_SVT_TEXTURE3D	= 8,
1042 	D3D_SVT_TEXTURECUBE	= 9,
1043 	D3D_SVT_SAMPLER	= 10,
1044 	D3D_SVT_SAMPLER1D	= 11,
1045 	D3D_SVT_SAMPLER2D	= 12,
1046 	D3D_SVT_SAMPLER3D	= 13,
1047 	D3D_SVT_SAMPLERCUBE	= 14,
1048 	D3D_SVT_PIXELSHADER	= 15,
1049 	D3D_SVT_VERTEXSHADER	= 16,
1050 	D3D_SVT_PIXELFRAGMENT	= 17,
1051 	D3D_SVT_VERTEXFRAGMENT	= 18,
1052 	D3D_SVT_UINT	= 19,
1053 	D3D_SVT_UINT8	= 20,
1054 	D3D_SVT_GEOMETRYSHADER	= 21,
1055 	D3D_SVT_RASTERIZER	= 22,
1056 	D3D_SVT_DEPTHSTENCIL	= 23,
1057 	D3D_SVT_BLEND	= 24,
1058 	D3D_SVT_BUFFER	= 25,
1059 	D3D_SVT_CBUFFER	= 26,
1060 	D3D_SVT_TBUFFER	= 27,
1061 	D3D_SVT_TEXTURE1DARRAY	= 28,
1062 	D3D_SVT_TEXTURE2DARRAY	= 29,
1063 	D3D_SVT_RENDERTARGETVIEW	= 30,
1064 	D3D_SVT_DEPTHSTENCILVIEW	= 31,
1065 	D3D_SVT_TEXTURE2DMS	= 32,
1066 	D3D_SVT_TEXTURE2DMSARRAY	= 33,
1067 	D3D_SVT_TEXTURECUBEARRAY	= 34,
1068 	D3D_SVT_HULLSHADER	= 35,
1069 	D3D_SVT_DOMAINSHADER	= 36,
1070 	D3D_SVT_INTERFACE_POINTER	= 37,
1071 	D3D_SVT_COMPUTESHADER	= 38,
1072 	D3D_SVT_DOUBLE	= 39,
1073 	D3D_SVT_RWTEXTURE1D	= 40,
1074 	D3D_SVT_RWTEXTURE1DARRAY	= 41,
1075 	D3D_SVT_RWTEXTURE2D	= 42,
1076 	D3D_SVT_RWTEXTURE2DARRAY	= 43,
1077 	D3D_SVT_RWTEXTURE3D	= 44,
1078 	D3D_SVT_RWBUFFER	= 45,
1079 	D3D_SVT_BYTEADDRESS_BUFFER	= 46,
1080 	D3D_SVT_RWBYTEADDRESS_BUFFER	= 47,
1081 	D3D_SVT_STRUCTURED_BUFFER	= 48,
1082 	D3D_SVT_RWSTRUCTURED_BUFFER	= 49,
1083 	D3D_SVT_APPEND_STRUCTURED_BUFFER	= 50,
1084 	D3D_SVT_CONSUME_STRUCTURED_BUFFER	= 51,
1085 	D3D10_SVT_VOID	= D3D_SVT_VOID,
1086 	D3D10_SVT_BOOL	= D3D_SVT_BOOL,
1087 	D3D10_SVT_INT	= D3D_SVT_INT,
1088 	D3D10_SVT_FLOAT	= D3D_SVT_FLOAT,
1089 	D3D10_SVT_STRING	= D3D_SVT_STRING,
1090 	D3D10_SVT_TEXTURE	= D3D_SVT_TEXTURE,
1091 	D3D10_SVT_TEXTURE1D	= D3D_SVT_TEXTURE1D,
1092 	D3D10_SVT_TEXTURE2D	= D3D_SVT_TEXTURE2D,
1093 	D3D10_SVT_TEXTURE3D	= D3D_SVT_TEXTURE3D,
1094 	D3D10_SVT_TEXTURECUBE	= D3D_SVT_TEXTURECUBE,
1095 	D3D10_SVT_SAMPLER	= D3D_SVT_SAMPLER,
1096 	D3D10_SVT_SAMPLER1D	= D3D_SVT_SAMPLER1D,
1097 	D3D10_SVT_SAMPLER2D	= D3D_SVT_SAMPLER2D,
1098 	D3D10_SVT_SAMPLER3D	= D3D_SVT_SAMPLER3D,
1099 	D3D10_SVT_SAMPLERCUBE	= D3D_SVT_SAMPLERCUBE,
1100 	D3D10_SVT_PIXELSHADER	= D3D_SVT_PIXELSHADER,
1101 	D3D10_SVT_VERTEXSHADER	= D3D_SVT_VERTEXSHADER,
1102 	D3D10_SVT_PIXELFRAGMENT	= D3D_SVT_PIXELFRAGMENT,
1103 	D3D10_SVT_VERTEXFRAGMENT	= D3D_SVT_VERTEXFRAGMENT,
1104 	D3D10_SVT_UINT	= D3D_SVT_UINT,
1105 	D3D10_SVT_UINT8	= D3D_SVT_UINT8,
1106 	D3D10_SVT_GEOMETRYSHADER	= D3D_SVT_GEOMETRYSHADER,
1107 	D3D10_SVT_RASTERIZER	= D3D_SVT_RASTERIZER,
1108 	D3D10_SVT_DEPTHSTENCIL	= D3D_SVT_DEPTHSTENCIL,
1109 	D3D10_SVT_BLEND	= D3D_SVT_BLEND,
1110 	D3D10_SVT_BUFFER	= D3D_SVT_BUFFER,
1111 	D3D10_SVT_CBUFFER	= D3D_SVT_CBUFFER,
1112 	D3D10_SVT_TBUFFER	= D3D_SVT_TBUFFER,
1113 	D3D10_SVT_TEXTURE1DARRAY	= D3D_SVT_TEXTURE1DARRAY,
1114 	D3D10_SVT_TEXTURE2DARRAY	= D3D_SVT_TEXTURE2DARRAY,
1115 	D3D10_SVT_RENDERTARGETVIEW	= D3D_SVT_RENDERTARGETVIEW,
1116 	D3D10_SVT_DEPTHSTENCILVIEW	= D3D_SVT_DEPTHSTENCILVIEW,
1117 	D3D10_SVT_TEXTURE2DMS	= D3D_SVT_TEXTURE2DMS,
1118 	D3D10_SVT_TEXTURE2DMSARRAY	= D3D_SVT_TEXTURE2DMSARRAY,
1119 	D3D10_SVT_TEXTURECUBEARRAY	= D3D_SVT_TEXTURECUBEARRAY,
1120 	D3D11_SVT_HULLSHADER	= D3D_SVT_HULLSHADER,
1121 	D3D11_SVT_DOMAINSHADER	= D3D_SVT_DOMAINSHADER,
1122 	D3D11_SVT_INTERFACE_POINTER	= D3D_SVT_INTERFACE_POINTER,
1123 	D3D11_SVT_COMPUTESHADER	= D3D_SVT_COMPUTESHADER,
1124 	D3D11_SVT_DOUBLE	= D3D_SVT_DOUBLE,
1125 	D3D11_SVT_RWTEXTURE1D	= D3D_SVT_RWTEXTURE1D,
1126 	D3D11_SVT_RWTEXTURE1DARRAY	= D3D_SVT_RWTEXTURE1DARRAY,
1127 	D3D11_SVT_RWTEXTURE2D	= D3D_SVT_RWTEXTURE2D,
1128 	D3D11_SVT_RWTEXTURE2DARRAY	= D3D_SVT_RWTEXTURE2DARRAY,
1129 	D3D11_SVT_RWTEXTURE3D	= D3D_SVT_RWTEXTURE3D,
1130 	D3D11_SVT_RWBUFFER	= D3D_SVT_RWBUFFER,
1131 	D3D11_SVT_BYTEADDRESS_BUFFER	= D3D_SVT_BYTEADDRESS_BUFFER,
1132 	D3D11_SVT_RWBYTEADDRESS_BUFFER	= D3D_SVT_RWBYTEADDRESS_BUFFER,
1133 	D3D11_SVT_STRUCTURED_BUFFER	= D3D_SVT_STRUCTURED_BUFFER,
1134 	D3D11_SVT_RWSTRUCTURED_BUFFER	= D3D_SVT_RWSTRUCTURED_BUFFER,
1135 	D3D11_SVT_APPEND_STRUCTURED_BUFFER	= D3D_SVT_APPEND_STRUCTURED_BUFFER,
1136 	D3D11_SVT_CONSUME_STRUCTURED_BUFFER	= D3D_SVT_CONSUME_STRUCTURED_BUFFER,
1137 	D3D_SVT_FORCE_DWORD	= 0x7fffffff
1138 }
1139 alias _D3D_SHADER_VARIABLE_TYPE	D3D_SHADER_VARIABLE_TYPE;
1140 
1141 
1142 alias _D3D_SHADER_INPUT_FLAGS = int;
1143 enum : _D3D_SHADER_INPUT_FLAGS
1144 {
1145 	D3D_SIF_USERPACKED	= 1,
1146 	D3D_SIF_COMPARISON_SAMPLER	= 2,
1147 	D3D_SIF_TEXTURE_COMPONENT_0	= 4,
1148 	D3D_SIF_TEXTURE_COMPONENT_1	= 8,
1149 	D3D_SIF_TEXTURE_COMPONENTS	= 12,
1150 	D3D10_SIF_USERPACKED	= D3D_SIF_USERPACKED,
1151 	D3D10_SIF_COMPARISON_SAMPLER	= D3D_SIF_COMPARISON_SAMPLER,
1152 	D3D10_SIF_TEXTURE_COMPONENT_0	= D3D_SIF_TEXTURE_COMPONENT_0,
1153 	D3D10_SIF_TEXTURE_COMPONENT_1	= D3D_SIF_TEXTURE_COMPONENT_1,
1154 	D3D10_SIF_TEXTURE_COMPONENTS	= D3D_SIF_TEXTURE_COMPONENTS,
1155 	D3D_SIF_FORCE_DWORD	= 0x7fffffff
1156 }
1157 alias _D3D_SHADER_INPUT_FLAGS D3D_SHADER_INPUT_FLAGS;
1158 
1159 
1160 alias _D3D_SHADER_INPUT_TYPE = int;
1161 enum : _D3D_SHADER_INPUT_TYPE
1162 {
1163 	D3D_SIT_CBUFFER	= 0,
1164 	D3D_SIT_TBUFFER	= ( D3D_SIT_CBUFFER + 1 ) ,
1165 	D3D_SIT_TEXTURE	= ( D3D_SIT_TBUFFER + 1 ) ,
1166 	D3D_SIT_SAMPLER	= ( D3D_SIT_TEXTURE + 1 ) ,
1167 	D3D_SIT_UAV_RWTYPED	= ( D3D_SIT_SAMPLER + 1 ) ,
1168 	D3D_SIT_STRUCTURED	= ( D3D_SIT_UAV_RWTYPED + 1 ) ,
1169 	D3D_SIT_UAV_RWSTRUCTURED	= ( D3D_SIT_STRUCTURED + 1 ) ,
1170 	D3D_SIT_BYTEADDRESS	= ( D3D_SIT_UAV_RWSTRUCTURED + 1 ) ,
1171 	D3D_SIT_UAV_RWBYTEADDRESS	= ( D3D_SIT_BYTEADDRESS + 1 ) ,
1172 	D3D_SIT_UAV_APPEND_STRUCTURED	= ( D3D_SIT_UAV_RWBYTEADDRESS + 1 ) ,
1173 	D3D_SIT_UAV_CONSUME_STRUCTURED	= ( D3D_SIT_UAV_APPEND_STRUCTURED + 1 ) ,
1174 	D3D_SIT_UAV_RWSTRUCTURED_WITH_COUNTER	= ( D3D_SIT_UAV_CONSUME_STRUCTURED + 1 ) ,
1175 	D3D10_SIT_CBUFFER	= D3D_SIT_CBUFFER,
1176 	D3D10_SIT_TBUFFER	= D3D_SIT_TBUFFER,
1177 	D3D10_SIT_TEXTURE	= D3D_SIT_TEXTURE,
1178 	D3D10_SIT_SAMPLER	= D3D_SIT_SAMPLER,
1179 	D3D11_SIT_UAV_RWTYPED	= D3D_SIT_UAV_RWTYPED,
1180 	D3D11_SIT_STRUCTURED	= D3D_SIT_STRUCTURED,
1181 	D3D11_SIT_UAV_RWSTRUCTURED	= D3D_SIT_UAV_RWSTRUCTURED,
1182 	D3D11_SIT_BYTEADDRESS	= D3D_SIT_BYTEADDRESS,
1183 	D3D11_SIT_UAV_RWBYTEADDRESS	= D3D_SIT_UAV_RWBYTEADDRESS,
1184 	D3D11_SIT_UAV_APPEND_STRUCTURED	= D3D_SIT_UAV_APPEND_STRUCTURED,
1185 	D3D11_SIT_UAV_CONSUME_STRUCTURED	= D3D_SIT_UAV_CONSUME_STRUCTURED,
1186 	D3D11_SIT_UAV_RWSTRUCTURED_WITH_COUNTER	= D3D_SIT_UAV_RWSTRUCTURED_WITH_COUNTER
1187 }
1188 alias _D3D_SHADER_INPUT_TYPE D3D_SHADER_INPUT_TYPE;
1189 
1190 
1191 alias _D3D_SHADER_CBUFFER_FLAGS = int;
1192 enum : _D3D_SHADER_CBUFFER_FLAGS
1193 {
1194 	D3D_CBF_USERPACKED	= 1,
1195 	D3D10_CBF_USERPACKED	= D3D_CBF_USERPACKED,
1196 	D3D_CBF_FORCE_DWORD	= 0x7fffffff
1197 }
1198 alias _D3D_SHADER_CBUFFER_FLAGS D3D_SHADER_CBUFFER_FLAGS;
1199 
1200 
1201 alias _D3D_CBUFFER_TYPE = int;
1202 enum : _D3D_CBUFFER_TYPE
1203 {
1204 	D3D_CT_CBUFFER	= 0,
1205 	D3D_CT_TBUFFER	= ( D3D_CT_CBUFFER + 1 ) ,
1206 	D3D_CT_INTERFACE_POINTERS	= ( D3D_CT_TBUFFER + 1 ) ,
1207 	D3D_CT_RESOURCE_BIND_INFO	= ( D3D_CT_INTERFACE_POINTERS + 1 ) ,
1208 	D3D10_CT_CBUFFER	= D3D_CT_CBUFFER,
1209 	D3D10_CT_TBUFFER	= D3D_CT_TBUFFER,
1210 	D3D11_CT_CBUFFER	= D3D_CT_CBUFFER,
1211 	D3D11_CT_TBUFFER	= D3D_CT_TBUFFER,
1212 	D3D11_CT_INTERFACE_POINTERS	= D3D_CT_INTERFACE_POINTERS,
1213 	D3D11_CT_RESOURCE_BIND_INFO	= D3D_CT_RESOURCE_BIND_INFO
1214 }
1215 alias _D3D_CBUFFER_TYPE D3D_CBUFFER_TYPE;
1216 
1217 
1218 alias D3D_NAME = int;
1219 enum : D3D_NAME
1220 {
1221 	D3D_NAME_UNDEFINED	= 0,
1222 	D3D_NAME_POSITION	= 1,
1223 	D3D_NAME_CLIP_DISTANCE	= 2,
1224 	D3D_NAME_CULL_DISTANCE	= 3,
1225 	D3D_NAME_RENDER_TARGET_ARRAY_INDEX	= 4,
1226 	D3D_NAME_VIEWPORT_ARRAY_INDEX	= 5,
1227 	D3D_NAME_VERTEX_ID	= 6,
1228 	D3D_NAME_PRIMITIVE_ID	= 7,
1229 	D3D_NAME_INSTANCE_ID	= 8,
1230 	D3D_NAME_IS_FRONT_FACE	= 9,
1231 	D3D_NAME_SAMPLE_INDEX	= 10,
1232 	D3D_NAME_FINAL_QUAD_EDGE_TESSFACTOR	= 11,
1233 	D3D_NAME_FINAL_QUAD_INSIDE_TESSFACTOR	= 12,
1234 	D3D_NAME_FINAL_TRI_EDGE_TESSFACTOR	= 13,
1235 	D3D_NAME_FINAL_TRI_INSIDE_TESSFACTOR	= 14,
1236 	D3D_NAME_FINAL_LINE_DETAIL_TESSFACTOR	= 15,
1237 	D3D_NAME_FINAL_LINE_DENSITY_TESSFACTOR	= 16,
1238 	D3D_NAME_TARGET	= 64,
1239 	D3D_NAME_DEPTH	= 65,
1240 	D3D_NAME_COVERAGE	= 66,
1241 	D3D_NAME_DEPTH_GREATER_EQUAL	= 67,
1242 	D3D_NAME_DEPTH_LESS_EQUAL	= 68,
1243     D3D_NAME_STENCIL_REF	= 69,
1244     D3D_NAME_INNER_COVERAGE	= 70,
1245 	D3D10_NAME_UNDEFINED	= D3D_NAME_UNDEFINED,
1246 	D3D10_NAME_POSITION	= D3D_NAME_POSITION,
1247 	D3D10_NAME_CLIP_DISTANCE	= D3D_NAME_CLIP_DISTANCE,
1248 	D3D10_NAME_CULL_DISTANCE	= D3D_NAME_CULL_DISTANCE,
1249 	D3D10_NAME_RENDER_TARGET_ARRAY_INDEX	= D3D_NAME_RENDER_TARGET_ARRAY_INDEX,
1250 	D3D10_NAME_VIEWPORT_ARRAY_INDEX	= D3D_NAME_VIEWPORT_ARRAY_INDEX,
1251 	D3D10_NAME_VERTEX_ID	= D3D_NAME_VERTEX_ID,
1252 	D3D10_NAME_PRIMITIVE_ID	= D3D_NAME_PRIMITIVE_ID,
1253 	D3D10_NAME_INSTANCE_ID	= D3D_NAME_INSTANCE_ID,
1254 	D3D10_NAME_IS_FRONT_FACE	= D3D_NAME_IS_FRONT_FACE,
1255 	D3D10_NAME_SAMPLE_INDEX	= D3D_NAME_SAMPLE_INDEX,
1256 	D3D10_NAME_TARGET	= D3D_NAME_TARGET,
1257 	D3D10_NAME_DEPTH	= D3D_NAME_DEPTH,
1258 	D3D10_NAME_COVERAGE	= D3D_NAME_COVERAGE,
1259 	D3D11_NAME_FINAL_QUAD_EDGE_TESSFACTOR	= D3D_NAME_FINAL_QUAD_EDGE_TESSFACTOR,
1260 	D3D11_NAME_FINAL_QUAD_INSIDE_TESSFACTOR	= D3D_NAME_FINAL_QUAD_INSIDE_TESSFACTOR,
1261 	D3D11_NAME_FINAL_TRI_EDGE_TESSFACTOR	= D3D_NAME_FINAL_TRI_EDGE_TESSFACTOR,
1262 	D3D11_NAME_FINAL_TRI_INSIDE_TESSFACTOR	= D3D_NAME_FINAL_TRI_INSIDE_TESSFACTOR,
1263 	D3D11_NAME_FINAL_LINE_DETAIL_TESSFACTOR	= D3D_NAME_FINAL_LINE_DETAIL_TESSFACTOR,
1264 	D3D11_NAME_FINAL_LINE_DENSITY_TESSFACTOR	= D3D_NAME_FINAL_LINE_DENSITY_TESSFACTOR,
1265 	D3D11_NAME_DEPTH_GREATER_EQUAL	= D3D_NAME_DEPTH_GREATER_EQUAL,
1266 	D3D11_NAME_DEPTH_LESS_EQUAL	= D3D_NAME_DEPTH_LESS_EQUAL,
1267     D3D11_NAME_STENCIL_REF	= D3D_NAME_STENCIL_REF,
1268     D3D11_NAME_INNER_COVERAGE	= D3D_NAME_INNER_COVERAGE
1269 }
1270 
1271 alias D3D_RESOURCE_RETURN_TYPE = int;
1272 enum : D3D_RESOURCE_RETURN_TYPE
1273 {
1274 	D3D_RETURN_TYPE_UNORM	= 1,
1275 	D3D_RETURN_TYPE_SNORM	= 2,
1276 	D3D_RETURN_TYPE_SINT	= 3,
1277 	D3D_RETURN_TYPE_UINT	= 4,
1278 	D3D_RETURN_TYPE_FLOAT	= 5,
1279 	D3D_RETURN_TYPE_MIXED	= 6,
1280 	D3D_RETURN_TYPE_DOUBLE	= 7,
1281 	D3D_RETURN_TYPE_CONTINUED	= 8,
1282 	D3D10_RETURN_TYPE_UNORM	= D3D_RETURN_TYPE_UNORM,
1283 	D3D10_RETURN_TYPE_SNORM	= D3D_RETURN_TYPE_SNORM,
1284 	D3D10_RETURN_TYPE_SINT	= D3D_RETURN_TYPE_SINT,
1285 	D3D10_RETURN_TYPE_UINT	= D3D_RETURN_TYPE_UINT,
1286 	D3D10_RETURN_TYPE_FLOAT	= D3D_RETURN_TYPE_FLOAT,
1287 	D3D10_RETURN_TYPE_MIXED	= D3D_RETURN_TYPE_MIXED,
1288 	D3D11_RETURN_TYPE_UNORM	= D3D_RETURN_TYPE_UNORM,
1289 	D3D11_RETURN_TYPE_SNORM	= D3D_RETURN_TYPE_SNORM,
1290 	D3D11_RETURN_TYPE_SINT	= D3D_RETURN_TYPE_SINT,
1291 	D3D11_RETURN_TYPE_UINT	= D3D_RETURN_TYPE_UINT,
1292 	D3D11_RETURN_TYPE_FLOAT	= D3D_RETURN_TYPE_FLOAT,
1293 	D3D11_RETURN_TYPE_MIXED	= D3D_RETURN_TYPE_MIXED,
1294 	D3D11_RETURN_TYPE_DOUBLE	= D3D_RETURN_TYPE_DOUBLE,
1295 	D3D11_RETURN_TYPE_CONTINUED	= D3D_RETURN_TYPE_CONTINUED
1296 }
1297 
1298 alias D3D_REGISTER_COMPONENT_TYPE = int;
1299 enum : D3D_REGISTER_COMPONENT_TYPE
1300 {
1301 	D3D_REGISTER_COMPONENT_UNKNOWN	= 0,
1302 	D3D_REGISTER_COMPONENT_UINT32	= 1,
1303 	D3D_REGISTER_COMPONENT_SINT32	= 2,
1304 	D3D_REGISTER_COMPONENT_FLOAT32	= 3,
1305 	D3D10_REGISTER_COMPONENT_UNKNOWN	= D3D_REGISTER_COMPONENT_UNKNOWN,
1306 	D3D10_REGISTER_COMPONENT_UINT32	= D3D_REGISTER_COMPONENT_UINT32,
1307 	D3D10_REGISTER_COMPONENT_SINT32	= D3D_REGISTER_COMPONENT_SINT32,
1308 	D3D10_REGISTER_COMPONENT_FLOAT32	= D3D_REGISTER_COMPONENT_FLOAT32
1309 }
1310 
1311 alias D3D_TESSELLATOR_DOMAIN = int;
1312 enum : D3D_TESSELLATOR_DOMAIN
1313 {
1314 	D3D_TESSELLATOR_DOMAIN_UNDEFINED	= 0,
1315 	D3D_TESSELLATOR_DOMAIN_ISOLINE	= 1,
1316 	D3D_TESSELLATOR_DOMAIN_TRI	= 2,
1317 	D3D_TESSELLATOR_DOMAIN_QUAD	= 3,
1318 	D3D11_TESSELLATOR_DOMAIN_UNDEFINED	= D3D_TESSELLATOR_DOMAIN_UNDEFINED,
1319 	D3D11_TESSELLATOR_DOMAIN_ISOLINE	= D3D_TESSELLATOR_DOMAIN_ISOLINE,
1320 	D3D11_TESSELLATOR_DOMAIN_TRI	= D3D_TESSELLATOR_DOMAIN_TRI,
1321 	D3D11_TESSELLATOR_DOMAIN_QUAD	= D3D_TESSELLATOR_DOMAIN_QUAD
1322 }
1323 
1324 alias D3D_TESSELLATOR_PARTITIONING = int;
1325 enum : D3D_TESSELLATOR_PARTITIONING
1326 {
1327 	D3D_TESSELLATOR_PARTITIONING_UNDEFINED	= 0,
1328 	D3D_TESSELLATOR_PARTITIONING_INTEGER	= 1,
1329 	D3D_TESSELLATOR_PARTITIONING_POW2	= 2,
1330 	D3D_TESSELLATOR_PARTITIONING_FRACTIONAL_ODD	= 3,
1331 	D3D_TESSELLATOR_PARTITIONING_FRACTIONAL_EVEN	= 4,
1332 	D3D11_TESSELLATOR_PARTITIONING_UNDEFINED	= D3D_TESSELLATOR_PARTITIONING_UNDEFINED,
1333 	D3D11_TESSELLATOR_PARTITIONING_INTEGER	= D3D_TESSELLATOR_PARTITIONING_INTEGER,
1334 	D3D11_TESSELLATOR_PARTITIONING_POW2	= D3D_TESSELLATOR_PARTITIONING_POW2,
1335 	D3D11_TESSELLATOR_PARTITIONING_FRACTIONAL_ODD	= D3D_TESSELLATOR_PARTITIONING_FRACTIONAL_ODD,
1336 	D3D11_TESSELLATOR_PARTITIONING_FRACTIONAL_EVEN	= D3D_TESSELLATOR_PARTITIONING_FRACTIONAL_EVEN
1337 }
1338 
1339 
1340 alias D3D_TESSELLATOR_OUTPUT_PRIMITIVE = int;
1341 enum : D3D_TESSELLATOR_OUTPUT_PRIMITIVE
1342 {
1343 	D3D_TESSELLATOR_OUTPUT_UNDEFINED	= 0,
1344 	D3D_TESSELLATOR_OUTPUT_POINT	= 1,
1345 	D3D_TESSELLATOR_OUTPUT_LINE	= 2,
1346 	D3D_TESSELLATOR_OUTPUT_TRIANGLE_CW	= 3,
1347 	D3D_TESSELLATOR_OUTPUT_TRIANGLE_CCW	= 4,
1348 	D3D11_TESSELLATOR_OUTPUT_UNDEFINED	= D3D_TESSELLATOR_OUTPUT_UNDEFINED,
1349 	D3D11_TESSELLATOR_OUTPUT_POINT	= D3D_TESSELLATOR_OUTPUT_POINT,
1350 	D3D11_TESSELLATOR_OUTPUT_LINE	= D3D_TESSELLATOR_OUTPUT_LINE,
1351 	D3D11_TESSELLATOR_OUTPUT_TRIANGLE_CW	= D3D_TESSELLATOR_OUTPUT_TRIANGLE_CW,
1352 	D3D11_TESSELLATOR_OUTPUT_TRIANGLE_CCW	= D3D_TESSELLATOR_OUTPUT_TRIANGLE_CCW
1353 }
1354 
1355 alias DWORD D3D_MIN_PRECISION;
1356 enum : D3D_MIN_PRECISION
1357 {
1358     D3D_MIN_PRECISION_DEFAULT	= 0,
1359     D3D_MIN_PRECISION_FLOAT_16	= 1,
1360     D3D_MIN_PRECISION_FLOAT_2_8	= 2,
1361     D3D_MIN_PRECISION_RESERVED	= 3,
1362     D3D_MIN_PRECISION_SINT_16	= 4,
1363     D3D_MIN_PRECISION_UINT_16	= 5,
1364     D3D_MIN_PRECISION_ANY_16	= 0xf0,
1365     D3D_MIN_PRECISION_ANY_10	= 0xf1
1366 }
1367 
1368 alias DWORD D3D_INTERPOLATION_MODE;
1369 enum : D3D_INTERPOLATION_MODE
1370 {
1371     D3D_INTERPOLATION_UNDEFINED	= 0,
1372     D3D_INTERPOLATION_CONSTANT	= 1,
1373     D3D_INTERPOLATION_LINEAR	= 2,
1374     D3D_INTERPOLATION_LINEAR_CENTROID	= 3,
1375     D3D_INTERPOLATION_LINEAR_NOPERSPECTIVE	= 4,
1376     D3D_INTERPOLATION_LINEAR_NOPERSPECTIVE_CENTROID	= 5,
1377     D3D_INTERPOLATION_LINEAR_SAMPLE	= 6,
1378     D3D_INTERPOLATION_LINEAR_NOPERSPECTIVE_SAMPLE	= 7
1379 }
1380 
1381 alias DWORD D3D_PARAMETER_FLAGS;
1382 enum : D3D_PARAMETER_FLAGS
1383 {
1384     D3D_PF_NONE	= 0,
1385     D3D_PF_IN	= 0x1,
1386     D3D_PF_OUT	= 0x2,
1387     D3D_PF_FORCE_DWORD	= 0x7fffffff
1388 }
1389 
1390 mixin( uuid!(WKPDID_D3DDebugObjectName,  "429b8c22-9188-4b0c-8742-acb0bf85c200") );
1391 mixin( uuid!(WKPDID_D3DDebugObjectNameW, "4cca5fd8-921f-42c8-8566-70caf2a9b741") );
1392 mixin( uuid!(WKPDID_CommentStringW,      "d0149dc0-90e8-4ec8-8144-e900ad266bb2") );
1393 interface WKPDID_D3DDebugObjectName {}
1394 interface WKPDID_D3DDebugObjectNameW {}
1395 interface WKPDID_CommentStringW {}